
import wxUrlConfig from '@/common/config.js'
const defaultHeaders = {
	'Accept': 'application/json',
	'Content-Type': 'application/json; charset=utf-8',
	'Pragma': 'no-cache',
	'Cache-Control': 'no-cache',
}
const formHeaders = {
	'Accept': 'application/json',
	'Content-Type': 'application/x-www-form-urlencoded',
	'Pragma': 'no-cache',
	'Cache-Control': 'no-cache',
}

// 头部方法
function headersInfo(data = {}) {
	let auth = uni.getStorageSync('auth');

	let newData = {
		header: {
		}
	}
	Object.assign(newData, data)
	if(auth) {
		newData.header.Authorization = 'Bearer ' + auth
	}
	
	return newData
}


/**
 * 封装的post请求(未登录)
 * @param url {String} 后台接口地址
 * @param data {Object} 
 * @param headers {object} 请求头
 */
export async function noLogin(data) {
	/* #ifdef MP-WEIXIN */
	const url = wxUrlConfig.urlConfig
	/* #endif */
	/* #ifdef MP-ALIPAY */
	const url = await getEnv()
	/* #endif */
	return new Promise((resolve) => {

		uni.request({
			url: url + data.url,
			data: data.params,
			method: data.method,
			header: headersInfo(data),
			success(res) {
				if (res.data.code === 200) {
					const {
						data
					} = res;
					resolve(data)
				} else {
					uni.showToast({
						icon: 'none',
						title: res.data.message || res.data.msg
					});
				}
			},
			fail: function(err) {

				uni.showToast({
					icon: 'none',
					title: '请检查您的网络~~'
				});
			}
		})
	})
}
/**
 * 封装的put请求
 * @param url {String} 后台接口地址
 * @param data {Object} 
 * @param headers {object} 请求头
 */

export async function request(data) {
	var mainUrl = wxUrlConfig.urlConfig + data.url;

	var headerInfo = headersInfo(data);
	
	return new Promise((resolve, reject) => {
		uni.request({
			url: mainUrl,
			data: data.params,
			method: data.method,
			header: headerInfo.header,
			timeout: 5 * 60 * 1000,
			success: function(res) {
				if (res.data.code != null) {
			
					if (res.data.code === 200) {
						
						const {
							data
						} = res;
						resolve(data)
						// resolve(res.data);
					} else if (res.data.code === 401) {
						uni.showToast({
							icon: 'none',
							title: '您的登录已超时，请重新登录'
						});
						
						// 1. 获取当前页面的实例
						var pages = getCurrentPages()
						// 2. 获取上一页
						var prevPage = null;
						pages.forEach((item, index) => {
							if (item.$page){
								if (item.$page.fullPath){
									if (item.$page.fullPath.indexOf("pages/root/main") != -1) {
										prevPage = item;
									}
								}
							}
						});
						// 3. 调用上个页面的方法 // 通知mine 页面进行刷新数据
						if (prevPage){
							prevPage.$vm.autoLoginManager()
						}
					} else {
						uni.showToast({
							icon: 'none',
							title: res.data.message || res.data.msg,
							duration: 3000
						});
						resolve(res.data)
					}
				}
			},
			fail: function(err) {

				uni.showToast({
					icon: 'none',
					title: '请检查您的网络~~' + mainUrl,
					duration: 3000
				});
				reject();
			}
		})
	})
}

const http = {
	request,
	noLogin
}
module.exports = http